package com.appbee.songs.server.model;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

import com.appbee.core.server.dao.access.DeleteAccess;
import com.appbee.core.server.dao.access.InsertAccess;
import com.appbee.core.server.dao.access.ReadAccess;
import com.appbee.core.server.dao.access.UpdateAccess;
import com.appbee.core.server.model.EditEntity;
import com.google.appengine.api.datastore.Text;
import com.google.code.twig.annotation.Index;
import com.google.code.twig.annotation.Type;

@ReadAccess
@UpdateAccess(roles = { "editor", "admin" })
@InsertAccess(roles = { "editor", "admin" })
@DeleteAccess(roles = "admin")
public class Song extends EditEntity
{
	@Index
	private int number;

	@NotNull
	@Size(max=500)
	@Index
	private String name;

	@Size(max=500)
	private String releaseYear;
	
	@Size(max=500)
	private String artist;

	@Size(max=500)
	private String composer;
	
	@Size(max=500)
	private String album;

	@Size(max=500)
	private String genre;

	@Size(max=500)
	private String keyTone;
	
	@Size(max=500)
	private String startingPlayer;

	@Type(Text.class)
	private String youtubeData;
	
	@Type(Text.class)
	private String lyrics;

	public int getNumber()
	{
		return number;
	}

	public void setNumber(int number)
	{
		this.number = number;
	}

	public String getName()
	{
		return name;
	}

	public void setName(String name)
	{
		this.name = name;
	}

	public String getReleaseYear()
	{
		return releaseYear;
	}

	public void setReleaseYear(String releaseYear)
	{
		this.releaseYear = releaseYear;
	}

	public String getArtist()
	{
		return artist;
	}

	public void setArtist(String artist)
	{
		this.artist = artist;
	}

	public String getComposer()
	{
		return composer;
	}

	public void setComposer(String composer)
	{
		this.composer = composer;
	}

	public String getAlbum()
	{
		return album;
	}

	public void setAlbum(String album)
	{
		this.album = album;
	}

	public String getGenre()
	{
		return genre;
	}

	public void setGenre(String genre)
	{
		this.genre = genre;
	}
	
	
	public String getKeyTone()
	{
		return keyTone;
	}

	public void setKeyTone(String keyTone)
	{
		this.keyTone = keyTone;
	}

	public String getStartingPlayer()
	{
		return startingPlayer;
	}

	public void setStartingPlayer(String startingPlayer)
	{
		this.startingPlayer = startingPlayer;
	}

	public String getYoutubeData()
	{
		return youtubeData;
	}

	public void setYoutubeData(String youtubeData)
	{
		this.youtubeData = youtubeData;
	}

	public String getLyrics()
	{
		return lyrics;
	}

	public void setLyrics(String lyrics)
	{
		this.lyrics = lyrics;
	}

	
}
